Memory devices often employ an error detection/correction technique to reduce the impact of storage errors. For example, a memory device can store error correcting code (ECC) information for memory locations in the memory device. The ECC data contains parity data or other data that allows the memory device to detect errors and, in some instances, correct detected errors. While memory error detection/correction techniques can improve memory reliability, the techniques also consume device resources so as to increase power consumption and increase the response time of the device. The consumption of these resources may be undesirable in some applications, such as in portable devices or other low-power devices.
In order to improve memory reliability in view of potential storage errors, some memory devices employ an initialization scheme wherein after a certain stimulus (such a reset stimulus, a power-on stimulus, or other event) all of the memory locations of the memory device are filled with an initialization value and the corresponding ECC data for the memory location is calculated based on the initialization value for the memory location. In some implementations, the initialization scheme is implemented by software at a corresponding processor whereby the processor stores initialization values into each memory location of the memory device using a memory access transaction via an external bus. This implementation results in excessive power consumption and is time consuming due to the bus transaction required for each memory location. In another implementation, the memory device initializes itself using hardware at the memory device, thereby avoiding the bus transactions required by the software-based approach. However, in conventional implementations, the initialization hardware at the memory device is not visible to the software being executed at the processor at the time of initialization, and thus the software is unable to track the progress of the initialization of the memory device. Accordingly, the software typically is required to wait until the entire memory device has been initialized, even though the software may need only a relatively small portion of the storage capacity of the memory device, resulting in excessive power consumption and unnecessary delay. Therefore, it is desirable to provide a memory initialization technique without unnecessarily consuming device resources.